DROP TABLE IF EXISTS jms_dm.dm_waybill_trace_dt;
CREATE EXTERNAL TABLE jms_dm.dm_waybill_trace_dt (
    waybill_no                   STRING    COMMENT '运单编号',
    step                         BIGINT    COMMENT '经过的第几个网点，从 1 开始',
    network_code                 STRING    COMMENT '网点编码',
    taking_cnt                   BIGINT    COMMENT '揽收扫描次数（包括揽收和入仓）',
    est_taking_time              TIMESTAMP COMMENT '揽收扫描最早时间（包括揽收和入仓）',
    lst_taking_time              TIMESTAMP COMMENT '揽收扫描最晚时间（包括揽收和入仓）',
    unloading_cnt                BIGINT    COMMENT '卸车扫描次数',
    est_unloading_time           TIMESTAMP COMMENT '卸车扫描最早时间',
    lst_unloading_time           TIMESTAMP COMMENT '卸车扫描最晚时间',
    arrival_cnt                  BIGINT    COMMENT '到件扫描次数（包括中心到件和网点到件）',
    est_arrival_time             TIMESTAMP COMMENT '到件扫描最早时间（包括中心到件和网点到件）',
    lst_arrival_time             TIMESTAMP COMMENT '到件扫描最晚时间（包括中心到件和网点到件）',
    bagging_cnt                  BIGINT    COMMENT '建包扫描次数',
    est_bagging_time             TIMESTAMP COMMENT '建包扫描最早时间',
    lst_bagging_time             TIMESTAMP COMMENT '建包扫描最晚时间',
    send_cnt                     BIGINT    COMMENT '发件扫描次数',
    est_send_time                TIMESTAMP COMMENT '发件扫描最早时间',
    lst_send_time                TIMESTAMP COMMENT '发件扫描最晚时间',
    loading_cnt                  BIGINT    COMMENT '装车扫描次数',
    est_loading_time             TIMESTAMP COMMENT '装车扫描最早时间',
    lst_loading_time             TIMESTAMP COMMENT '装车扫描最晚时间',
    deliver_cnt                  BIGINT    COMMENT '派件扫描次数',
    est_deliver_time             TIMESTAMP COMMENT '派件扫描最早时间',
    lst_deliver_time             TIMESTAMP COMMENT '派件扫描最晚时间',
    sign_cnt                     BIGINT    COMMENT '签收次数',
    est_sign_time                TIMESTAMP COMMENT '签收最早时间',
    lst_sign_time                TIMESTAMP COMMENT '签收最晚时间',
    scan_cnt                     BIGINT    COMMENT '扫描次数',
    steps_cnt                    BIGINT    COMMENT '运单一共经历多少站点，等同末端网点 step',
    est_entrepot_step            BIGINT    COMMENT '运单始发集散对应的 step',
    est_center_step              BIGINT    COMMENT '运单始发中心对应的 step',
    lst_center_step              BIGINT    COMMENT '运单末端中心对应的 step',
    lst_entrepot_step            BIGINT    COMMENT '运单末端中心对应的 step',
    center_cnt                   BIGINT    COMMENT '运单一共经历多少转运中心',
    est_scan_time                TIMESTAMP COMMENT '最早扫描时间',
    est_scan_type                STRING    COMMENT '最早扫描类型',
    lst_scan_time                TIMESTAMP COMMENT '最晚扫描时间',
    lst_scan_type                STRING    COMMENT '最晚扫描类型',
    next_network_code            STRING    COMMENT '下一网点编码(如果尚未到达下一站，则取最晚发件扫描的 next_station_code)',
    next_est_arrival_time        TIMESTAMP COMMENT '下一网点最早到件扫描时间',
    next_lst_arrival_time        TIMESTAMP COMMENT '下一网点最晚到件扫描时间',
    next_est_scan_time           TIMESTAMP COMMENT '下一站最早扫描时间',
    next_est_scan_type           STRING    COMMENT '下一站最早扫描类型',
    next_lst_scan_type           STRING    COMMENT '下一站最早扫描类型',
    package_code                 STRING    COMMENT '本站最晚建包包号',
    unload_shipment_no           STRING    COMMENT '本站卸车任务号',
    unload_shipment_arrival_time TIMESTAMP COMMENT '本站卸车到车时间',
    load_shipment_no             STRING    COMMENT '本站装车任务号',
    load_shipment_departure_time TIMESTAMP COMMENT '本站装车发车时间',
    next_unload_shipment_no      STRING    COMMENT '下一站卸车任务号',
    next_unload_shipment_arrival_time TIMESTAMP COMMENT '下一站实际到车时间',
    network_is_entrepot          BOOLEAN   COMMENT '网点是否为集散点',
    network_is_center            BOOLEAN   COMMENT '网点是否为转运中心',
    network_is_est_entrepot      BOOLEAN   COMMENT '网点是否为始发集散点',
    network_is_est_center        BOOLEAN   COMMENT '网点是否为始发转运中心',
    network_is_lst_entrepot      BOOLEAN   COMMENT '网点是否为末端集散点',
    network_is_lst_center        BOOLEAN   COMMENT '网点是否为末端转运中心',
    network_is_lst_network       BOOLEAN   COMMENT '网点是否为末端网点',
    next_network_is_entrepot     BOOLEAN   COMMENT '下一网点是否为集散点',
    next_network_is_center       BOOLEAN   COMMENT '下一网点是否为转运中心',
    next_network_is_est_entrepot BOOLEAN   COMMENT '下一网点是否为始发集散点',
    next_network_is_est_center   BOOLEAN   COMMENT '下一网点是否为始发转运中心',
    next_network_is_lst_entrepot BOOLEAN   COMMENT '下一网点是否为末端集散点',
    next_network_is_lst_center   BOOLEAN   COMMENT '下一网点是否为末端转运中心',
    prev_network_code            STRING    COMMENT '前一站网点编码',
    send_next_network_code       STRING    COMMENT '最晚发件扫描中的下一站网点编码',
    loading_next_network_code    STRING    COMMENT '最晚装车扫描中的下一站网点编码'
)
    COMMENT '运单转运轨迹表，主键：waybill_no + step'
    PARTITIONED BY (dt STRING COMMENT '运单在网点的最晚扫描日期')
    STORED AS PARQUET
    LOCATION '/dw/hive/jms_dm.db/external/dm_waybill_trace_dt'
    TBLPROPERTIES (
        'discover.partitions' = 'false',
        'parquet.column.index.access' = 'true'
        );
MSCK REPAIR TABLE jms_dm.dm_waybill_trace_dt;
